/*
	NounEnhancementWeapon.h
	(c)2008 Palestar Inc, Jeff Everett
*/



#ifndef NOUNENHANCEMENTWEAPON_H
#define NOUNENHANCEMENTWEAPON_H

#include "NounEnhancement.h"

class DLL NounEnhancement_MaverickWeaponDamage : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MaverickWeaponDamage();

	CharString GetName() const { return "Maverick's Ultimate Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
	dword requirementFlags() const {return REQ_ADMIN;} 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}
};


// Minor Weapon------------------------------------------------------------//

class DLL NounEnhancement_MinorWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorWeaponAccelerator();

	CharString GetName() const { return "Minor Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorWeaponCooler();

	CharString GetName() const { return "Minor Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorWeaponMultiplexer();

	CharString GetName() const { return "Minor Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_MinorWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_MinorWeaponCondenser();

	CharString GetName() const { return "Minor Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
};


// Limited Weapon ---------------------------------------------------------------//
class DLL NounEnhancement_LimitedWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedWeaponAccelerator();

	CharString GetName() const { return "Limited Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedWeaponCooler();

	CharString GetName() const { return "Limited Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedWeaponMultiplexer();

	CharString GetName() const { return "Limited Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_LimitedWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_LimitedWeaponCondenser();

	CharString GetName() const { return "Limited Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Standard Weapon ---------------------------------------------------------------//
class DLL NounEnhancement_StandardWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardWeaponAccelerator();

	CharString GetName() const { return "Standard Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardWeaponCooler();

	CharString GetName() const { return "Standard Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardWeaponMultiplexer();

	CharString GetName() const { return "Standard Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_StandardWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_StandardWeaponCondenser();

	CharString GetName() const { return "Standard Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Improved Weapon ---------------------------------------------------------------//
class DLL NounEnhancement_ImprovedWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedWeaponAccelerator();

	CharString GetName() const { return "Improved Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedWeaponCooler();

	CharString GetName() const { return "Improved Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedWeaponMultiplexer();

	CharString GetName() const { return "Improved Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_ImprovedWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ImprovedWeaponCondenser();

	CharString GetName() const { return "Improved Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Enhanced Weapon ---------------------------------------------------------------//
class DLL NounEnhancement_EnhancedWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedWeaponAccelerator();

	CharString GetName() const { return "Enhanced Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedWeaponCooler();

	CharString GetName() const { return "Enhanced Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedWeaponMultiplexer();

	CharString GetName() const { return "Enhanced Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
};

class DLL NounEnhancement_EnhancedWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_EnhancedWeaponCondenser();

	CharString GetName() const { return "Enhanced Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
};

// Advanced Weapon ---------------------------------------------------------------//
class DLL NounEnhancement_AdvancedWeaponAccelerator : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedWeaponAccelerator();

	CharString GetName() const { return "Advanced Weapon Accelerator";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedWeaponCooler : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedWeaponCooler();

	CharString GetName() const { return "Advanced Weapon Cooler";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedWeaponMultiplexer : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedWeaponMultiplexer();

	CharString GetName() const { return "Advanced Weapon Multiplexer";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_AdvancedWeaponCondenser : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_AdvancedWeaponCondenser();

	CharString GetName() const { return "Advanced Weapon Condenser";}
	ApplyType applyType() const { return AT_ATTACH;}
	Rarity rarity()  const {return RARITY_RARE;}
};

class DLL NounEnhancement_ZlygsWeaponAugmentation : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ZlygsWeaponAugmentation();

	CharString GetName() const { return "Zlyg's Weapon Augmentation";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_DESTROYER|REQ_CRUISER|REQ_DREAD|REQ_STATION;} 
	Rarity rarity()  const {return RARITY_RARE;}

};


class DLL NounEnhancement_ThariWeaponBooster : public NounEnhancement
{
public:
	DECLARE_WIDGET_CLASS();
	DECLARE_PROPERTY_LIST();

	NounEnhancement_ThariWeaponBooster();

	CharString GetName() const { return "Thari's Weapon Booster";}
	ApplyType applyType() const { return AT_ATTACH;}
	bool IsUnique() const {return true;}

	dword requirementFlags() const {return REQ_SUBSCRIBER|REQ_ANY;} 
	Rarity rarity()  const {return RARITY_ULTRA_RARE;}

};


#endif
